package Server;

import java.io.File;
import javax.swing.*;

class Utils {
	public final static String xml = "xml";

	/*
	 * Lấy định dạng file
	 */
	public static String getExtension(File f) {
		String ext = null;
		String s = f.getName();
		int i = s.lastIndexOf('.');

		if (i > 0 && i < s.length() - 1) {
			ext = s.substring(i + 1).toLowerCase();
		}
		return ext;
	}

	protected static ImageIcon createImageIcon(String path) {
		java.net.URL imgURL = Utils.class.getResource(path);
		if (imgURL != null) {
			return new ImageIcon(imgURL);
		} else {
			System.err.println("Couldn't find file: " + path);
			return null;
		}
	}
}

public class DocLuuFile extends JPanel {
	JFileChooser fc;
	ServerGUI fatherFrame;
	private String fileLocation;

	/**
	 * Khai báo đối tưởng sử lý đọc, lưu file
	 * @param frame chính của Server
	 * @param đối tượng kích hoạt event
	 */
	public DocLuuFile(ServerGUI _fatherFrame, JButton actionButton) {
		fatherFrame = _fatherFrame;
		fc = new JFileChooser();

		/**
		 * Xử lý load file lên
		 */
		if (actionButton == fatherFrame.getBtnDocTuFile()) {
			// Xử lý lọc file .xml
			fc.setFileFilter(new javax.swing.filechooser.FileFilter() {
				@Override
				public String getDescription() {
					return "XML files";
				}
				
				@Override
				public boolean accept(File f) {
					if (f.isDirectory()) 
					{
						return true;
					}

					String extension = Utils.getExtension(f);
					if (extension != null) {
						if (extension.equals(Utils.xml))
						{
							return true;
						} 
						else 
						{
							return false;
						}
					}

					return false;
				}
			});
			fc.setAcceptAllFileFilterUsed(false);

			int returnVal = fc.showOpenDialog(DocLuuFile.this);
			if (returnVal == JFileChooser.APPROVE_OPTION) {
				File file = fc.getSelectedFile();
				setFileLocation(file.getAbsolutePath());
				fatherFrame.setLuuDuongDan(getFileLocation());
			}
		}

		/**
		 * Xử lý lưu file xuống CSDL
		 */
		if (actionButton == fatherFrame.getBtnLuu()) {
			if (fatherFrame.getLuuDuongDan().isEmpty())
			{
				int returnVal = fc.showSaveDialog(DocLuuFile.this);
				if (returnVal == JFileChooser.APPROVE_OPTION) {
					File file = fc.getSelectedFile();
					setFileLocation(file.getAbsolutePath());
					if(!getFileLocation().toLowerCase().endsWith(".xml"))
					{
					    setFileLocation(getFileLocation() + ".xml");
					}
				}
			}
			else
			{
				setFileLocation(fatherFrame.getLuuDuongDan());
			}
			fatherFrame.getLblTrangThaiDuLieu().setText("Đã lưu dữ liệu");
		}
	}

	/**
	 * @return the fileLocation
	 */
	public String getFileLocation() {
		return fileLocation;
	}

	/**
	 * @param fileLocation
	 *            the fileLocation to set
	 */
	public void setFileLocation(String fileLocation) {
		this.fileLocation = fileLocation;
	}
}
